home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 4076 / 4076.xpi / chrome / addthis.jar / content / Sharing.js < prev    next >
Encoding:
JavaScript  |  2010-01-06  |  6.3 KB  |  172 lines

  1. var AddThis_Sharing = {
  2.  
  3.     shareCurrentPage: function() {
  4.         AddThis_Util.dbg("shareCurrentPage: sharing page...");
  5.         var url = gBrowser.contentDocument.location.href;
  6.         var title = gBrowser.contentTitle;
  7.         AddThis_Sharing.invokeService('more', url, title);
  8.     },
  9.     
  10.     sharePage: function(url, title) {
  11.         AddThis_Util.dbg("sharePage: sharing page...");
  12.         AddThis_Sharing.invokeService('more', url, title);
  13.     },
  14.     
  15.     invokeService: function(serviceId, url, title)
  16.     {
  17.         AddThis_Util.dbg("invokeService: " + serviceId);
  18.         
  19.         if (typeof url == "undefined") url = gBrowser.contentDocument.location.href;
  20.         if (typeof title == "undefined") title = gBrowser.contentTitle;
  21.         
  22.         
  23.         
  24.         if (url.indexOf(AddThis_Constants.OEXCHANGE_SERVICE)==0 ||
  25.             url.indexOf('://')==-1) return;
  26.     
  27.         if (typeof serviceId == "string")
  28.         {
  29.             switch(serviceId)
  30.             {
  31.                 case 'favorites':
  32.                     if (gContextMenu && gContextMenu.onLink)
  33.                     {
  34.                         if ('bookmarkLink' in gContextMenu) gContextMenu.bookmarkLink(); 
  35.                         else BookmarksUtils.addBookmark(url,title); 
  36.                     }
  37.                     else
  38.                     {
  39.                         var bkmkCommand = document.getElementById('Browser:AddBookmarkAs');
  40.                         bkmkCommand.doCommand();
  41.                     }
  42.                     break;
  43.                 case 'mailto':
  44.                     window.location.href = 'mailto:?subject='+
  45.                         encodeURIComponent(title?title:'')+
  46.                         '&body='+encodeURIComponent(title?title:'')+
  47.                         (title?"%0D%0A":"")+encodeURIComponent(url)+
  48.                         '%0D%0A%0D%0AShared via AddThis.com';
  49.                     break; 
  50.                 case 'print':
  51.                     gBrowser.contentWindow.print();
  52.                     break;
  53.                 default:
  54.                     var u = AddThis_Constants.OEXCHANGE_SERVICE;
  55.                     u += (serviceId == 'more') ? "offer" : "forward/" + serviceId + "/offer";
  56.                     u += "?url=" + encodeURIComponent(url) +
  57.                          "&title=" + encodeURIComponent(title) +
  58.                          "&pco=" + AddThis_Constants.PCO + "-" + AddThis_Constants.EXTENSION_VERSION;
  59.                     var pubId = AddThis_Sharing._extractPubId();
  60.                     if (pubId != false) u += "&username=" + encodeURIComponent(pubId);
  61.                     
  62.                     AddThis_Util.navToUrl(u);
  63.                 break;
  64.             }
  65.         }
  66.         else
  67.         {
  68.             AddThis_Sharing.invokeService('more', url, title);
  69.         }
  70.     },
  71.     
  72.     initShareMenu: function(menuId,url,title)
  73.     {
  74.         var menupopup = document.getElementById(menuId);
  75.         var sharethispageItem = document.getElementById(menuId+"_sharethispage");
  76.  
  77.         AddThis_Sharing.clearShareMenu(menupopup);
  78.         
  79.         var serviceId, newItem, items=0,
  80.             activeServices = AddThis_Util.getActiveServicesObject();
  81.         for (serviceId in activeServices)
  82.         {
  83.             newItem = AddThis_Sharing._createMenuitem(serviceId,url,title);
  84.             if (!newItem) continue;
  85.             menupopup.insertBefore(newItem,sharethispageItem);
  86.             items++;
  87.         }
  88.         
  89.         
  90.         if (sharethispageItem._listener) sharethispageItem.removeEventListener("command", sharethispageItem._listener, false);
  91.         sharethispageItem._listener = (typeof url == "undefined") ?
  92.             this._shareCurrentPageHandler :
  93.             AddThis_Util.tumeric(AddThis_Sharing._shareUrlHander,url,title);
  94.         sharethispageItem.addEventListener("command", sharethispageItem._listener, false);
  95.        
  96.         if (items===0)
  97.         {
  98.             sharethispageItem.setAttribute("label", sharethispageItem.getAttribute("share_label"));
  99.         }
  100.         else
  101.         {
  102.             sharethispageItem.setAttribute("label", sharethispageItem.getAttribute("more_label"));
  103.         }
  104.         
  105.     },
  106.     
  107.     clearShareMenu: function(menupopup)
  108.     {
  109.         var menuitems = menupopup.getElementsByTagName('menuitem');
  110.         var item, removeItems = [];
  111.         
  112.         for(i=0; i<menuitems.length; i++)
  113.         {
  114.             item = menuitems[i];
  115.             if (item.hasAttribute("class") && item.getAttribute("class").indexOf("addthis-service-item") !== -1) removeItems.push(item);
  116.         }
  117.         
  118.         while(removeItems.length > 0) menupopup.removeChild(removeItems.pop());
  119.     },
  120.     
  121.     _shareCurrentPageHandler: function(event)
  122.     {
  123.         AddThis_Sharing.shareCurrentPage();
  124.         event.stopPropagation();
  125.     },
  126.     
  127.     _shareUrlHander: function(url,title,event)
  128.     {
  129.         AddThis_Sharing.sharePage(AddThis_Util.slash(url),AddThis_Util.slash(title));
  130.         event.stopPropagation();
  131.     },
  132.     
  133.     _getObject: function()
  134.     {
  135.         if (typeof gBrowser.contentWindow.wrappedJSObject !== "undefined" &&
  136.             typeof gBrowser.contentWindow.wrappedJSObject._ate == "object")
  137.         {
  138.             return gBrowser.contentWindow.wrappedJSObject._ate;
  139.         }
  140.         
  141.         return false;
  142.     },
  143.     
  144.     _extractPubId: function()
  145.     {
  146.         var obj = AddThis_Sharing._getObject();
  147.         return (obj === false) ? false : obj.pub();
  148.     },
  149.     
  150.     
  151.     _createMenuitem: function(serviceId,url,title)
  152.     {
  153.         var newItem = document.createElement("menuitem");
  154.         newItem.setAttribute("serviceid",serviceId);
  155.         newItem.setAttribute("label",AddThis_Constants.services[serviceId].title);
  156.         newItem.setAttribute("tooltiptext",AddThis_Constants.services[serviceId].title);
  157.         newItem.setAttribute("class","menuitem-iconic addthis-service-item");
  158.         newItem.setAttribute("style","list-style-image: url('chrome://addthis/skin/services/"+serviceId+".gif');");
  159.         if (url !== undefined)
  160.         {
  161.             
  162.             if (AddThis_Constants.services[serviceId].currentOnly) return false;
  163.             newItem.setAttribute("oncommand", "AddThis_Sharing.invokeService('"+serviceId+"','"+AddThis_Util.slash(url)+"','"+AddThis_Util.slash(title)+"');event.stopPropagation();");
  164.         }
  165.         else
  166.         {
  167.             newItem.setAttribute("oncommand", "AddThis_Sharing.invokeService('"+serviceId+"');event.stopPropagation();");
  168.         }
  169.         return newItem;
  170.     }
  171.  
  172. };